package com.huang.auth.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huang.auth.entity.po.AuthMenuPO;
import com.huang.auth.entity.request.AuthMenuAddRequest;
import com.huang.auth.entity.request.AuthMenuEditRequest;
import com.huang.auth.entity.vo.AuthMenuSimpleVO;
import com.huang.auth.entity.vo.AuthMenuVO;

import java.util.List;

/**
 * 菜单(AuthMenu)表服务接口
 *
 * @author HuangShen
 * @since 2021-09-21 17:13:47
 */
public interface AuthMenuService extends IService<AuthMenuPO> {


    /**
     * 添加菜单
     * @param authMenuAddRequest authMenuAddRequest
     * @return boolean
     */
    boolean addMenu(AuthMenuAddRequest authMenuAddRequest);

    /**
     * 修改菜单
     * @param authMenuEditRequest authMenuEditRequest
     * @return boolean
     */
    boolean editMenu(AuthMenuEditRequest authMenuEditRequest);

    /**
     * 获取简单菜单与操作点列表 仅支持2级菜单
     * @return List<AuthMenuSimpleVO>
     */
    List<AuthMenuSimpleVO> menuSimpleListV1();

    /**
     * 获取简单菜单与操作点列表
     * @return List<AuthMenuSimpleVO>
     */
    List<AuthMenuSimpleVO> menuSimpleListV2();

    /**
     * 根据父id 获取菜单列表
     * @param aLong aLong
     * @return AuthMenuVO
     */
    List<AuthMenuVO> menuList(Long aLong);

    /**
     * 根据 角色id 获取角色拥有的菜单与操作点
     * @param roleId roleId
     * @return AuthMenuResourceIdsVO
     */
    List<List<String>> authorizedMenuAndIds(long roleId);
}

